Computer users interact with computer files through a copy engine, which is part of the operating system shell of the computer. The shell copy engine generates user interface (UI) dialogs, such as a progress UI dialog that illustrates progress of a copy operation and error dialogs that indicate conflict or permission errors. As used herein, a “dialog” includes a window, a message box, or another portion of a graphical computer display which appears in order to communicate information from a computer program and/or to obtain information from the user. Familiar examples are progress dialogs and error dialogs used in various versions of the WINDOWS operating system (available from Microsoft Corporation of Redmond, Wash.). A dialog often contains a brief message (e.g., “The folder already contains a file named “examplefile;” or “Would you like to replace the existing file with this one?”) and one or more graphical buttons for possible user responses (e.g., “yes,” “no,” etc.).
Conventional copy engines manage the copying, moving and deleting of individual files or collections of files. These engines delete files by flagging them for removal, such as by placing them in a ‘recycle bin,’ ‘trash can’ or other temporary folder. They operate in a serial manner to perform a given operation in sequential order. When conventional copy engines encounter an error during an operation, they stop processing the operation and display a dialog for the error that requires user input. Processing continues after the user provides instructions for handling the error. This can be frustrating for a user. For instance, in a multi-hour copy operation, the error can occur 10 minutes into the operation after the user has already left the machine; the user will return several hours later expecting the process to be done (e.g., copying large files to a laptop for a trip) and find that only 10 minutes of processing has been completed.
Conventional copy engines typically begin processing a requested operation, such as a copy operation, without verifying sufficient storage space for the requested operation or evaluating potential. For instance, they may not check for sufficient disk space on a hard drive to which files will be copied prior to beginning the copy process. If insufficient disk space is encountered, the operation stops and the user is then notified. This may occur after the operation is largely complete.
When a user cancels a requested operation while it is in progress (e.g., the user selects a “cancel” button on a progress dialog), conventional copy engines stop the operation at that point in its progression. However, they do not cancel the operation to undo the moving or copying of files that occurred in the operation up to the point of interruption. Thus, selected files are left in an indeterminate state and users must figure out how to clean this up themselves.
Conventional copy engines process file name conflicts by prompting the user to select one of the conflicting files for storage at a selected destination. For instance, if a user attempts to copy a file to a destination in which a file of the same name resides, conventional copy engines will ask the user whether they want to keep the older file or the newer file. Subsequently, only the user-selected file is kept at the destination.
It is also known for computer systems to employ error handling systems to detect and correct data errors. These error handling systems operate at the data link layer of the known open systems interconnection reference model (OSI Model) to ensure correct data transmission and to verify that data has been written to or read from a memory location. For instance, conventional computer systems add a parity bit or a cyclic redundancy check (CRC) field to data to ensure the data is correctly transmitted between two devices or to ensure words are written to or read from memory. These error handling mechanisms are employed for computer operations at the data link layer of the OSI Model for detecting data errors, rather than for detecting or monitoring errors associated with moving or copying files.